#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QDesktopWidget>

#define WIDTH 400
#define HEIGHT 300
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setFixedSize(WIDTH,HEIGHT);

    


    setWidgetPosition();
    connect(QApplication::desktop(),&QDesktopWidget::resized,this,[=](){
        setWidgetPosition();
    });
    connect(QApplication::desktop(),&QDesktopWidget::screenCountChanged,this,[=](){
        setWidgetPosition();
    });
    connect(QApplication::desktop(),&QDesktopWidget::primaryScreenChanged,this,[=](){
        setWidgetPosition();
    });


}

Widget::~Widget()
{
    delete ui;
}

void Widget::setWidgetPosition()
{
    #define MARGIN 4
    QDBusInterface iface("org.ukui.panel",
                         "/panel/position",
                         "org.ukui.panel",
                         QDBusConnection::sessionBus());
    QDBusReply<QVariantList> reply=iface.call("GetPrimaryScreenGeometry");
    //reply获取的参数共5个，分别是 主屏可用区域的起点x坐标，主屏可用区域的起点y坐标，主屏可用区域的宽度，主屏可用区域高度，任务栏位置
//    reply.value();
if (!iface.isValid() || !reply.isValid() || reply.value().size()<5) {
        qCritical() << QDBusConnection::sessionBus().lastError().message();
        this->setGeometry(0,0,WIDTH,HEIGHT);
    }

    qDebug()<<reply.value().at(4).toInt();
    QVariantList position_list=reply.value();

    switch(reply.value().at(4).toInt()){
    case 1:
        //任务栏位于上方
        this->setGeometry(position_list.at(0).toInt()+position_list.at(2).toInt()-WIDTH-MARGIN,
                          position_list.at(1).toInt()+MARGIN,
                          WIDTH,HEIGHT);
        break;
        //任务栏位于左边
    case 2:
        this->setGeometry(position_list.at(0).toInt()+MARGIN,
                          position_list.at(1).toInt()+reply.value().at(3).toInt()-HEIGHT-MARGIN,
                          WIDTH,HEIGHT);
        break;
        //任务栏位于右边
    case 3:
        this->setGeometry(position_list.at(0).toInt()+position_list.at(2).toInt()-WIDTH-MARGIN,
                          position_list.at(1).toInt()+reply.value().at(3).toInt()-HEIGHT-MARGIN,
                          WIDTH,HEIGHT);
        break;
        //任务栏位于下方
    default:
        this->setGeometry(position_list.at(0).toInt()+position_list.at(2).toInt()-WIDTH-MARGIN,
                          position_list.at(1).toInt()+reply.value().at(3).toInt()-HEIGHT-MARGIN,
                          WIDTH,HEIGHT);
        break;
    }

}

// 激活系统托盘
void Widget::onActivated(QSystemTrayIcon::ActivationReason reason)
{
    switch(reason)
    {
    // 单击托盘显示窗口
    case QSystemTrayIcon::Trigger:
    {
#if 0
        showNormal();
        raise();
        activateWindow();
        break;
#endif
	qDebug()<<"******** Triger";
        activateWindow();
    }
    // 双击
    case QSystemTrayIcon::DoubleClick:
    {
        // ...
        break;
    }
    default:
        break;
    }
}
